<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>API 文档</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            margin: 0;
            padding: 0 20px;
            background-color: #f9f9f9;
        }
        h1, h2, h3 {
            color: #333;
        }
        h1 {
            border-bottom: 2px solid #ddd;
            padding-bottom: 10px;
        }
        pre {
            background-color: #f4f4f4;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 5px;
            overflow-x: auto;
        }
        code {
            background-color: #f4f4f4;
            padding: 2px 4px;
            border-radius: 3px;
        }
        .container {
            max-width: 800px;
            margin: 20px auto;
            background: #fff;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
    </style>
</head>
<body>
<div class="container">
    <h1>API 文档</h1>
    <p>本文档基于代码分析生成，描述了三个控制器类（<code>BookController</code>、<code>BorrowController</code> 和 <code>UserController</code>）的 API 接口，适当补充了功能描述。</p>

    <h2>BookController</h2>
    <h3>1. 查询书籍</h3>
    <ul>
        <li><strong>URL:</strong> <code>/book</code></li>
        <li><strong>请求方式:</strong> GET</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li><code>bookName</code> (可选): 书名</li>
                <li><code>isbn</code> (可选): 编号</li>
                <li><code>author</code> (可选): 作者</li>
                <li><code>press</code> (可选): 出版社</li>
                <li><code>className</code> (可选): 类别</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 返回符合条件的书籍列表</li>
                <li>失败: 返回空数据</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 根据多条件模糊匹配查询书籍信息。</li>
    </ul>

    <h3>2. 新增书籍</h3>
    <ul>
        <li><strong>URL:</strong> <code>/book</code></li>
        <li><strong>请求方式:</strong> POST</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li>请求体: 书籍信息 (<code>Book</code> 对象)</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示新增成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 添加新的书籍信息到数据库。</li>
    </ul>

    <h3>3. 更新书籍</h3>
    <ul>
        <li><strong>URL:</strong> <code>/book</code></li>
        <li><strong>请求方式:</strong> PUT</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li>请求体: 更新后的书籍信息 (<code>Book</code> 对象)</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示更新成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 更新书籍信息，需要 <code>isbn</code> 唯一标识。</li>
    </ul>

    <h3>4. 删除书籍</h3>
    <ul>
        <li><strong>URL:</strong> <code>/book</code></li>
        <li><strong>请求方式:</strong> DELETE</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li><code>isbn</code> (必填): 书籍编号</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示删除成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 删除指定编号的书籍。</li>
    </ul>

    <h2>BorrowController</h2>
    <h3>1. 查询借阅信息</h3>
    <ul>
        <li><strong>URL:</strong> <code>/book/loan</code></li>
        <li><strong>请求方式:</strong> GET</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li><code>barcode</code> (可选): 图书条码</li>
                <li><code>isbn</code> (可选): 图书编号</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 返回借阅记录和库存信息</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 根据条码或编号查询借阅信息，包括匹配的库存。</li>
    </ul>

    <h3>2. 新增借阅记录</h3>
    <ul>
        <li><strong>URL:</strong> <code>/book/loan</code></li>
        <li><strong>请求方式:</strong> POST</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li>请求体: 借阅记录 (<code>ReadBook</code> 对象)</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示新增成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 添加新的借阅记录。</li>
    </ul>

    <h3>3. 更新借阅记录</h3>
    <ul>
        <li><strong>URL:</strong> <code>/book/loan</code></li>
        <li><strong>请求方式:</strong> PUT</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li>请求体: 更新后的借阅记录 (<code>ReadBook</code> 对象)</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示更新成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 更新借阅记录，需要提供记录的唯一标识 <code>id</code>。</li>
    </ul>

    <h3>4. 删除借阅记录</h3>
    <ul>
        <li><strong>URL:</strong> <code>/book/loan</code></li>
        <li><strong>请求方式:</strong> DELETE</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li><code>id</code> (必填): 借阅记录的唯一标识</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示删除成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 删除借阅记录，仅管理员角色有权限。</li>
    </ul>

    <h2>UserController</h2>
    <h3>1. 用户登录</h3>
    <ul>
        <li><strong>URL:</strong> <code>/user/login</code></li>
        <li><strong>请求方式:</strong> POST</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li><code>userId</code> (必填): 用户 ID</li>
                <li><code>password</code> (必填): 用户密码</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 返回带有 <code>token</code> 的登录信息</li>
                <li>失败: 提示登录失败</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 用户通过 ID 和密码登录，支持管理员和学生。</li>
    </ul>

    <h3>2. 获取学生信息</h3>
    <ul>
        <li><strong>URL:</strong> <code>/user/student</code></li>
        <li><strong>请求方式:</strong> GET</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li><code>cardId</code> (可选): 学生卡号</li>
                <li><code>token</code> (必填): 登录凭证</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 返回学生信息</li>
                <li>失败: 返回权限错误或数据错误</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 根据权限获取学生信息。</li>
    </ul>

    <h3>3. 更新学生信息</h3>
    <ul>
        <li><strong>URL:</strong> <code>/user/student</code></li>
        <li><strong>请求方式:</strong> PUT</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li>请求体: 学生信息 (<code>Student</code> 对象)</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示更新成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 更新学生信息，仅管理员有权限。</li>
    </ul>

    <h3>4. 新增学生信息</h3>
    <ul>
        <li><strong>URL:</strong> <code>/user/student</code></li>
        <li><strong>请求方式:</strong> POST</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li>请求体: 新学生信息 (<code>Student</code> 对象)</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示新增成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 添加新学生信息，仅管理员有权限。</li>
    </ul>

    <h3>5. 删除学生信息</h3>
    <ul>
        <li><strong>URL:</strong> <code>/user/student</code></li>
        <li><strong>请求方式:</strong> DELETE</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li><code>cardId</code> (必填): 学生卡号</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 提示删除成功</li>
                <li>失败: 返回错误信息</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 删除学生信息，仅管理员有权限。</li>
    </ul>

    <h3>6. 查询管理员信息</h3>
    <ul>
        <li><strong>URL:</strong> <code>/user/admin</code></li>
        <li><strong>请求方式:</strong> GET</li>
        <li><strong>请求参数:</strong>
            <ul>
                <li><code>adminId</code> (可选): 管理员 ID</li>
                <li><code>token</code> (必填): 登录凭证</li>
            </ul>
        </li>
        <li><strong>响应:</strong>
            <ul>
                <li>成功: 返回管理员信息（隐藏密码字段）</li>
                <li>失败: 返回权限错误或数据错误</li>
            </ul>
        </li>
        <li><strong>描述:</strong> 查询管理员信息，仅允许管理员查询自己的信息。</li>
    </ul>
</div>
</body>
</html>